#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;

int n;
double th[100005], pw, pf[100005], vw[100005], vf[100005];
const double EPS = 1e-6;

double cnt(double w)
{
	double p = w*pw;
	for(int i = 0; i < n; ++i)
	{
		double v = w * vw[i];
		p += max(0.0, th[i] - v) / vf[i] * pf[i];
	}
	return p;
}


int main()
{
	while(1)
	{
		scanf("%d", &n);
		if(!n) return 0;
		scanf("%lf", &pw);
		for(int i = 0; i < n; ++i)
			scanf("%lf%lf%lf%lf", &vw[i], &pf[i], &vf[i], &th[i]);

		double lw = 0, rw = 0;
		for(int i = 0; i < n; ++i)
			rw = max(rw, th[i]);
		double w1, w2, p1 = 0, p2; 
		while(rw - lw > EPS)
		{
			w1 = lw + (rw - lw)/3;
			w2 = rw - (rw - lw)/3;
			p1 = cnt(w1), p2 = cnt(w2);
			if(p1 < p2)
				rw = w2;
			else 
				lw = w1;
		}

		printf("%.5lf\n", p1);	
	}



	return 0;
}
